﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using aplicacionVideoclub.BaseDatos;
using aplicacionVideoclub.LogicaNegocio;

namespace aplicacionVideoclub.LogicaNegocio
{
    public class admPeliculas
    {
        public static Pelicula buscarPelicula(string busqueda)
        {
            VideoclubEntities bd = new VideoclubEntities();
            return bd.Pelicula.SingleOrDefault(p=>p.nombrePelicula==busqueda);
        }

        public string ingresarPelicula(string nombrePeli, string formato, string duracion, int ano, string director, string genero, string pais)
        {
            VideoclubEntities bd = new VideoclubEntities();
            var pelicula = buscarPelicula(nombrePeli);
            if (pelicula != null)
            {
                string mensaje = "La película ya existe";
                return mensaje;
            }
            else
            {
                Pelicula nPeli = new Pelicula();
                if (buscarDirector(director) != null)
                {
                    
                    var direc = buscarDirector(director);
                    nPeli.ID_director = direc.id_director;

                }
                else
                {

                    Director direc = new Director();
                    direc.nombreDirector = director;

                    bd.Director.Add(direc);

                }
                if (buscarGenero(genero) != null)
                {
                    
                    var gene = buscarGenero(genero);
                    nPeli.ID_genero = gene.id_genero;

                }
                else
                {

                    Genero gene = new Genero();
                    gene.nombreGenero = genero;

                    bd.Genero.Add(gene);

                }
                if (buscarPais(pais) != null)
                {
                   
                    var pai = buscarPais(pais);
                    nPeli.ID_pais = pai.id_pais;
                 
                }
                else
                {

                    Pais country = new Pais();
                    country.nombrePais = pais;
                    
                    bd.Pais.Add(country);

                }

                nPeli.nombrePelicula = nombrePeli;
                nPeli.formato = formato;
                nPeli.duracion = duracion;
                nPeli.año = ano;
                
                bd.Pelicula.Add(nPeli);
                bd.SaveChanges();
                string mensaje = "Película Ingresada";
                return mensaje;
            }
        }

        public Director buscarDirector(string busqueda)
        {
            VideoclubEntities bd = new VideoclubEntities();
            return bd.Director.SingleOrDefault(d=> d.nombreDirector==busqueda);
        }

        public static void ingresarDirector(string director)
        {
            VideoclubEntities bd = new VideoclubEntities();

            Director nuevodirector = new Director()
            {
                nombreDirector = director
            };

            bd.Director.Add(nuevodirector);
            bd.SaveChanges();
        }

        public static Genero buscarGenero(string busqueda)
        {
            VideoclubEntities bd = new VideoclubEntities();
            return bd.Genero.SingleOrDefault(g => g.nombreGenero == busqueda);
        }

        public static void ingresarGenero(string genero)
        {
            VideoclubEntities bd = new VideoclubEntities();

            Genero nuevogenero = new Genero()
            {
                nombreGenero = genero
            };

            bd.Genero.Add(nuevogenero);
            bd.SaveChanges();
        }

        public static Pais buscarPais(string busqueda)
        {
            VideoclubEntities bd = new VideoclubEntities();
            return bd.Pais.SingleOrDefault(p => p.nombrePais == busqueda);
        }

        public static void ingresarPais(string pais)
        {
            VideoclubEntities bd = new VideoclubEntities();

            Pais nuevopais = new Pais()
            {
                nombrePais = pais
            };

            bd.Pais.Add(nuevopais);
            bd.SaveChanges();
        }

        //Método para actualizar el formato y duracion de la película 
        public static string modificarPelicula(string nombrePeli, string formato, string duracion)
        {
            VideoclubEntities bd = new VideoclubEntities();
            Pelicula actualizaPeli = bd.Pelicula.SingleOrDefault(a => a.nombrePelicula == nombrePeli);

            actualizaPeli.formato = formato;
            actualizaPeli.duracion = duracion;
            bd.SaveChanges();
            string mensaje = "La película ha sido actualizada";
            return mensaje;
        }
        
        //Método para eliminar películas

        public static string eliminarPelicula(string nombrePeli, string formato, string duracion, int ano, string director, string genero, string pais)
        {
            VideoclubEntities bd = new VideoclubEntities();
            Pelicula eliminaPeli = bd.Pelicula.SingleOrDefault(e => e.nombrePelicula == nombrePeli);
            bd.Pelicula.Remove(eliminaPeli);
            bd.SaveChanges();
            string mensaje = "Película eliminada";
            return mensaje;
        }
    }
}
